Macro Execution Time কমানোর Techniques গাইড ও নোট

Big Data and Analytics - এক্সেল ম্যাক্রো (Excel Macros) - Excel Macros এর জন্য Performance Optimization
336

Excel ম্যাক্রো ব্যবহার করার সময়, বিশেষ করে বড় ডেটাসেট বা জটিল কোডের ক্ষেত্রে, এক্সেলের পারফরম্যান্স ধীরে ধীরে কমতে পারে। ম্যাক্রো চালানোর সময় Execution Time বা Run Time যদি বেশি হয়ে যায়, তবে তা কাজের গতি ব্যাহত করতে পারে। তবে কিছু কৌশল অবলম্বন করলে আপনি কোডের Execution Time কমাতে পারেন। নিচে কিছু প্রভাবশালী টেকনিক দেওয়া হলো যা ম্যাক্রোর পারফরম্যান্স উন্নত করতে সাহায্য করবে।


১. Screen Updating বন্ধ রাখা

Screen Updating এক্সেলকে প্রতিটি কাজের পর স্ক্রিনে ফলাফল প্রদর্শন করতে বলে। যখন আপনি ম্যাক্রো চালাচ্ছেন এবং একাধিক পরিবর্তন ঘটাচ্ছেন, তখন Screen Updating চালু থাকলে এক্সেল প্রতিটি পরিবর্তন স্ক্রিনে দেখাবে, যা সময় নষ্ট করতে পারে।

Solution: Screen Updating বন্ধ করা

ম্যাক্রো চালানোর আগে স্ক্রীন আপডেটিং বন্ধ করে, শেষে আবার তা চালু করতে পারেন।

Sub MacroWithNoScreenUpdate()
    Application.ScreenUpdating = False ' Disable screen updating
    
    ' Your macro code here
    For i = 1 To 10000
        Cells(i, 1).Value = "Test"
    Next i
    
    Application.ScreenUpdating = True ' Re-enable screen updating
End Sub

এভাবে ScreenUpdating বন্ধ রাখলে কোড দ্রুত রান করবে, কারণ এক্সেল প্রতিটি সেল পরিবর্তন করার পর স্ক্রীনে আপডেট দেখানোর জন্য সময় নেবে না।


২. Automatic Calculations বন্ধ রাখা

যখন Automatic Calculation চালু থাকে, এক্সেল প্রতিটি সেলের মান পরিবর্তিত হলে স্বয়ংক্রিয়ভাবে ক্যালকুলেশন করবে। এর ফলে বড় ডেটাসেট বা জটিল কোডে Calculation Time বাড়তে পারে।

Solution: Calculation বন্ধ করা

আপনি Calculation বন্ধ করে কোড চালাতে পারেন এবং শেষে আবার তা চালু করতে পারেন।

Sub MacroWithNoCalculation()
    Application.Calculation = xlCalculationManual ' Disable automatic calculation
    Application.ScreenUpdating = False ' Disable screen updating
    
    ' Your macro code here
    For i = 1 To 10000
        Cells(i, 1).Value = "Test"
    Next i
    
    Application.Calculation = xlCalculationAutomatic ' Re-enable automatic calculation
    Application.ScreenUpdating = True ' Re-enable screen updating
End Sub

এভাবে Calculation বন্ধ রাখলে কোড রান করার সময় এক্সেল কোনো ক্যালকুলেশন করবে না, যা Execution Time কমিয়ে দেবে।


৩. Enable Events বন্ধ করা

Enable Events এক্সেলকে ইভেন্ট ট্রিগার করতে বলে, যেমন সেল এডিট করার সময় Worksheet_Change ইভেন্ট ট্রিগার করা। বড় ম্যাক্রোতে অনেক ইভেন্ট চালু থাকলে, এটি ম্যাক্রোর পারফরম্যান্স ধীর করে দেয়।

Solution: Events বন্ধ করা

আপনি কোড চলাকালীন Events বন্ধ করতে পারেন এবং শেষে আবার চালু করতে পারেন।

Sub MacroWithNoEvents()
    Application.EnableEvents = False ' Disable events
    Application.ScreenUpdating = False ' Disable screen updating
    Application.Calculation = xlCalculationManual ' Disable automatic calculation
    
    ' Your macro code here
    For i = 1 To 10000
        Cells(i, 1).Value = "Test"
    Next i
    
    Application.EnableEvents = True ' Re-enable events
    Application.ScreenUpdating = True ' Re-enable screen updating
    Application.Calculation = xlCalculationAutomatic ' Re-enable automatic calculation
End Sub

এভাবে EnableEvents বন্ধ রাখলে কোড চলাকালীন কোনো ইভেন্ট ট্রিগার হবে না, যা কোডের পারফরম্যান্সে সাহায্য করবে।


৪. Range Operations কমানো

এক্সেল VBA কোডে, একাধিক সেল বা রেঞ্জের উপর কাজ করার সময় একসঙ্গে সবকিছু না করে প্রতিটি সেলের জন্য আলাদা আলাদা অপারেশন করার কারণে অনেক সময় Execution Time বৃদ্ধি পেতে পারে। এজন্য Range Operations একসঙ্গে করা উচিত।

Solution: একাধিক Range Operations একত্রিত করা

নিচে একটি উদাহরণ দেওয়া হল যেখানে Range Operations একত্রিত করে Execution Time কমানো হয়েছে:

Sub OptimizedRangeOperations()
    Dim rng As Range
    Set rng = Range("A1:A10000")
    
    rng.Value = "Test" ' Apply changes to entire range in one operation
End Sub

এখানে, সমস্ত সেলগুলোকে একসঙ্গে পরিবর্তন করা হচ্ছে, যার ফলে কোড দ্রুত রান করবে।


৫. Variables এবং Arrays ব্যবহার করা

Variables এবং Arrays ব্যবহার করে, আপনি ডেটা সংগ্রহ এবং প্রক্রিয়া করার জন্য আরও দক্ষ উপায় তৈরি করতে পারেন। সেল থেকে একাধিক বার ডেটা রিড বা রাইট করার চেয়ে, এটি অনেক দ্রুত হবে যদি আপনি Array ব্যবহার করেন।

Solution: Arrays ব্যবহার করা

Sub UsingArrays()
    Dim arr(1 To 10000) As String
    Dim i As Long
    
    ' Load data into array
    For i = 1 To 10000
        arr(i) = "Test " & i
    Next i
    
    ' Write array data to range in one go
    Range("A1:A10000").Value = Application.Transpose(arr)
End Sub

এখানে, ডেটা প্রথমে একটি অ্যারে তে সংরক্ষণ করা হচ্ছে এবং তারপর তা একবারে রেঞ্জে সন্নিবেশ করা হচ্ছে। এতে একাধিক সেল রিড এবং রাইট করার প্রয়োজন পড়ে না, যা Execution Time কমিয়ে দেয়।


৬. Do-Loop এর পরিবর্তে For-Loop ব্যবহার করা

Do-Loop এর মধ্যে কোডের প্রতিটি ধাপ আবার পুনরাবৃত্তি করতে হতে পারে, যা অনেক সময় ধীর করতে পারে। তার পরিবর্তে For-Loop ব্যবহার করলে আরও দ্রুত কোড লেখা যায়।

Solution: For-Loop ব্যবহার করা

Sub ForLoopInsteadOfDoLoop()
    Dim i As Long
    For i = 1 To 10000
        Cells(i, 1).Value = "Test"
    Next i
End Sub

এখানে, For-Loop ব্যবহার করে আমরা কোডের Execution Time কমাতে সক্ষম হয়েছি, কারণ এটি দ্রুত কাজ করে।


৭. Conditional Formatting এবং Formulas এর ব্যবহার সীমিত করা

Conditional Formatting এবং Complex Formulas অনেক সময় Excel Workbook এর পারফরম্যান্সকে ধীর করে দেয়। যখন আপনি ম্যাক্রো চালাচ্ছেন, তখন সেগুলি সীমিত করে রাখা ভাল।

Solution: Conditional Formatting এবং Formulas কমানো

এটি করার জন্য, আপনি কোডে শর্তযুক্ত ফরম্যাটিং এবং ফর্মুলাগুলিকে প্রোগ্রাম্যাটিক্যালি মুছে বা অক্ষম করতে পারেন:

Sub DisableConditionalFormatting()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ws.Cells.FormatConditions.Delete ' Delete all conditional formatting
    
    ' Your macro code here
    ws.Range("A1:A10000").Value = "Test"
End Sub

এভাবে Conditional Formatting এবং Complex Formulas অক্ষম করলে কোডের সময় সাশ্রয় হবে।


সারাংশ

Excel ম্যাক্রো ব্যবহার করার সময় Execution Time কমানোর জন্য কিছু গুরুত্বপূর্ণ কৌশল অবলম্বন করা যেতে পারে। যেমন ScreenUpdating, Calculation, এবং EnableEvents বন্ধ রাখা, Range Operations একত্রিত করা, Arrays ব্যবহার করা, এবং Do-Loop এর পরিবর্তে For-Loop ব্যবহার করা। এছাড়াও Conditional Formatting এবং Complex Formulas এর ব্যবহার সীমিত করলে কোডের কার্যকারিতা বৃদ্ধি পায়। এই কৌশলগুলি ব্যবহার করলে আপনার ম্যাক্রোর Execution Time কমানো সম্ভব হবে, যা এক্সেলের পারফরম্যান্স উন্নত করবে।

Content added By
Promotion

Are you sure to start over?

Loading...